﻿#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QDebug>
#include <QMouseEvent>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 启动定时器  间隔，单位是毫秒
    id1 = startTimer(1000);

    id2 = startTimer(2000);

    // 定时器的第二种方式
    QTimer* timer=new QTimer(this);

    // 启动定时器 每隔0.5秒发送一个信号
    timer->start(500);

    connect(timer,&QTimer::timeout,[=](){
        static int num3=1;
        ui->timer3->setText(QString::number(num3++));
    });

    // 点击暂停按钮暂停定时器
    connect(ui->btn,&QPushButton::clicked,[=](){
        timer->stop();
    });


    // 给label安装事件过滤器
    ui->label->installEventFilter(this);
    // 重写 eventfilter事件


}

bool Widget::eventFilter(QObject *obj, QEvent *ev)
{
    if(obj==ui->label)
    {
        if(ev->type()==QEvent::MouseButtonPress)
        {
            QMouseEvent* e=static_cast<QMouseEvent*> (ev);
            QString str=QString("in eventFilter: x=%1 y=%2").arg(e->x()).arg(e->y());
            qDebug()<<str;

            return true;
        }
    }

    // 其他默认处理
    return QWidget::eventFilter(obj,ev);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::timerEvent(QTimerEvent *event)
{
    if(event->timerId()==id1)
    {
        static int num1=1;
        ui->timer1->setText(QString::number(num1++));
    }
    else if(event->timerId()==id2)
    {
        static int num2=1;
        ui->timer2->setText(QString::number(num2++));
    }

}


